<?php
/**********************************************************************
 *                                                                    *    
 * Copyright (c) 2009 Dmytro Bezhnar. All rights reserved.       			  *
 *                                                                    *
 **********************************************************************/

/**
 * Abstract class for all persistable entity managers.
 *
 * @abstract
 * @version $Id: AbstractManager.php,v 1.5 2008/10/07 09:53:49 master Exp $
 */
abstract class AbstractManager
{
    /**
     * Error Array
     * 
     * @var array
     */
    protected $_errors = array();

 /**#@+
  * Error manipulation section
  */
    
    /**
	 * If found error return false 
	 *
	 * @return boolean
	 */
	function isOk() { return !count($this->_errors); }

	/**
	 * Сбрасывает масив сообщений об ошибках.
	 */
	function setOk() { $this->_errors = array(); }

	/**
	 * Устанавливает сообщение об ошибке.
	 * 
	 */
	function setError($error_msg) {
    	array_push($this->_errors, $error_msg);
	}
	
	/**
	 * Возвращает последнюю ошибку
	 * 
	 * @param boolean $showAllErrors Показывать все ошибки
	 * @return string 
	 */
	function getError($showAllErrors=false) {
		$retStr = '';
		if ($showAllErrors) {
			$retStr = join($this->_errors,';');
		} else {
			$retStr = $this->_errors[0];
		}
		return $retStr;
	}
	
	/**
	 * Copy errors from target manager ()
	 * @param EntityManager Object
	 */
	function addErrorsFrom(&$EntityManager) {
        $this->_errors = array_merge($this->_errors,$EntityManager->_errors);
	}

	
 	/**
  	* Вызывает системную функцию оповешения об ошибке
  	*
  	* @param string $error_msg
  	* @param integer $error_type
  	*/
	public function trigger_error($error_msg, $error_type = E_USER_WARNING) {
	    if (ini_get('display_errors') || $error_type != E_USER_ERROR){
	        trigger_error($error_msg, $error_type);
	    }else{
	        header('Location: /error.html');
	    }
	}
	
/**#@-*/
    
}

?>